package Other;

public class leet_168 {

    public static void main(String[] args) {

    }

}

class Solution_168 {
    /**
     * 这个题目本质其实就是26进制。
     * 但是一般我们10进制是0-9 每进一位就除以10
     * 这里是从1开始到26，所以我们每次在计算进位运算时，先对该数-1
     * 在除10求余数，每次计算完余数对应的位置信息后除26。
     * 本质就和除10取余相同
     * @param columnNumber
     * @return
     */
    public String convertToTitle(int columnNumber) {
        String lastValue = "";
        while (columnNumber >0){
            // 先对1-26进位的数字变为 0-25位进位
            columnNumber = columnNumber - 1;
            // 取出需要进位的数字
            int tmp = columnNumber%26;
            String a = numToLetter(tmp);
            lastValue = a + lastValue;
            // 每次进位就需要除26（26进制）
            columnNumber = columnNumber/26;
        }
        return lastValue;
    }

    /**
     * 传入一个 0-25的数字返回一个大写英文
     * @param num 0-25 数字
     * @return  大写的英文
     */
    public String numToLetter (int num) {
        String letter = "";
        letter =  (char)(num+ (int)'A') + letter;
        return letter;
    }

}

